package com.hiultra.archive.mapper;

import com.hiultra.common.core.domain.entity.ArcCabinet;

import java.util.List;
import java.util.Map;

/**
 * 智能柜Mapper接口
 *
 * @author 李爽
 * @date 2023-08-22
 */
public interface ArcCabinetMapper {
    /**
     * 查询智能柜
     *
     * @param cabinetId 智能柜主键
     * @return 智能柜
     */
    public ArcCabinet selectArcCabinetByCabinetId(Long cabinetId);

    /**
     * 查询智能柜列表
     *
     * @param arcCabinet 智能柜
     * @return 智能柜集合
     */
    public List<ArcCabinet> selectArcCabinetList(ArcCabinet arcCabinet);

    /**
     * 新增智能柜
     *
     * @param arcCabinet 智能柜
     * @return 结果
     */
    public int insertArcCabinet(ArcCabinet arcCabinet);

    /**
     * 修改智能柜
     *
     * @param arcCabinet 智能柜
     * @return 结果
     */
    public int updateArcCabinet(ArcCabinet arcCabinet);

    /**
     * 删除智能柜
     *
     * @param cabinetId 智能柜主键
     * @return 结果
     */
    public int deleteArcCabinetByCabinetId(Long cabinetId);

    /**
     * 批量删除智能柜
     *
     * @param cabinetIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteArcCabinetByCabinetIds(Long[] cabinetIds);

    /**
     * 删除根据Code
     */
    int delByCode(String cabinetCode);

    /**
     * 删除根据父类Code
     */
    int delByParentCode(String parentCode);

    /**
     * 检查增加时是否存在
     *
     * @param arcCabinet
     * @return 结果
     */
    ArcCabinet checkInsert(ArcCabinet arcCabinet);

    /**
     * 查询本级最大编号
     */
    String selectMaxCode(Long parentId);

    /**
     * 验证是否满足修改条件
     */
    ArcCabinet checkUpdate(ArcCabinet arcCabinet);

    /**
     * 查询智能柜一级
     *
     * @return 智能柜列表
     */
    public List<ArcCabinet> selectArcCabinetAll();


    /* 删除智能柜下级信息
     *
     * @param shelvesIds 智能柜主键集合
     * @return 结果
     */
    public int deleteArcCabinetAllInfoOne(Long cabinetId);


    /**
     * 多个删除智能柜下级信息
     *
     * @param cabinetIds 密集架主键集合
     * @return 结果
     */
    public int deleteArcCabinetAllInfo(Long[] cabinetIds);

   /**
    *  根据智能柜id查询名称
	 */
    List<Map<String,Object>> selectCabinetName(Long cabinetId);

}
